//
//  NWTBViewController.swift
//  微博01
//
//  Created by 牛威 on 15/12/5.
//  Copyright © 2015年 牛威. All rights reserved.
//

import UIKit

class NWTBViewController: UITabBarController {
    
    
    
    
    
    //MARK: - 监听方法
    
    @objc private  func clickCompose(){
    
      print("点击+号按钮")
    
    
    }
    
    
    
    //MARK: - 视图生命周期函数

    override func viewDidLoad() {//viewdidload只是加载完视图 并没有显示  显示是由make        window?.makeKeyAndVisible()调用的 这时候视图才会显示

        super.viewDidLoad()
        
        //添加子控制器 但是并不会创建tabbar中的按钮
        //懒加载是无处不在的,所有控件都是延迟创建的
        
       addChildViewControllers()
        
        
//        print(tabBar.subviews)
        
       setupCompose()
        
        

    }
    
    
    override func viewWillAppear(animated: Bool) {
        
        //一定要调用父类方法 否则不下面代码无效
        
        super.viewWillAppear(animated)
        
//        print(tabBar.subviews)

        
        //此时的compose在最下面的位置  
        
        tabBar.bringSubviewToFront(composeButton)
    }
    
    //MARK: - 懒加载控件
    
    private lazy var composeButton : UIButton =  UIButton(
        imgName: "tabbar_compose_icon_add",
        backImage: "tabbar_compose_button")

}

//MARK: - 设置界面

extension NWTBViewController{
    
    private func setupCompose(){
    
        
        /// 添加撰写按钮
        
        tabBar.addSubview(composeButton)
        
        //设置尺寸frame
        
        let count = viewControllers?.count ?? 0
        
        //这里的1是为了解决手势的容错问题 让按钮的宽度宽一点点
        
        let w = tabBar.bounds.width / CGFloat(count) - 1
        
        //返回一个相同中心点的矩形 2的值越大越往里缩 0的值负的往上涨
        
        composeButton.frame = CGRectInset(tabBar.bounds, 2 * w, 0)
        
        //添加按钮的点击事件
        
        composeButton.addTarget(self, action: "clickCompose", forControlEvents: UIControlEvents.TouchUpInside)
     
    
    }
    
    
    private func addChildViewControllers(){
        
        
        // 第一种方式 如果能用颜色可以解决的话 就不用素材 提高性能 (全局中设置)
        
//        tabBar.tintColor = UIColor.orangeColor()//图片渲染颜色
        
    
        addChildViewController(NWHomeTableViewController(), title: "首页", imgName: "tabbar_home")
        
        addChildViewController(NWMesTableViewController(), title: "消息", imgName: "tabbar_message_center")
        
        addChildViewController(UIViewController())

        addChildViewController(NWDisTableViewController(), title: "发现", imgName: "tabbar_discover")

        addChildViewController(NWProTableViewController(), title: "我", imgName: "tabbar_profile")

        
    
    
    }
    
    /// 添加子控制器
    ///          vc 控制器
    /// - parameter title:   名称
    /// - parameter imgName: 图片名称



    private func addChildViewController(vc : UIViewController,title:String,imgName:String) {
        
        
        //设置标题 由内到外渗透 所以都会有显示 tabbar_profile_selected
        
        vc.title = title
        
        vc.tabBarItem.image = UIImage(named: imgName)
        
        
        vc.tabBarItem.selectedImage = UIImage(named:"\(imgName)_selected" )
        
        let nav = NWNavigationController(rootViewController: vc)
        
        
        
        
        
        addChildViewController(nav)
        
        
    }
    
    
    



 }
